/**
 * @author Silas Fontain, Søren Lorentzen, Daniel Nissen
 */

package ordination;

import java.util.GregorianCalendar;

public abstract class Ordination {
	private GregorianCalendar startDen;
	private GregorianCalendar slutDen;
	private Laegemiddel laegemiddel;


	/**
	 * Opretter en ordination med de givne parametre
	 * @param startDen Startdatoen for ordinationen
	 * @param slutDen Slutdato for ordinationen
	 */
	public Ordination(GregorianCalendar startDen, GregorianCalendar slutDen, Laegemiddel laegemiddel) {
		this.startDen = startDen;
		this.slutDen = slutDen;
		this.laegemiddel = laegemiddel;
	}
	
	
	public GregorianCalendar getStartDen() {
		return startDen;
	}	
	
	public GregorianCalendar getSlutDen() {
			return slutDen;
	}
	/**
	 * Returnerer antal hele dage mellem startdato og slutdato. Begge dage inklusive.
	 * Krav: startdato<=slutdato
	 * @return antal dage ordinationen gaelder for
	 */
	public long antalDage(){
		return (slutDen.getTimeInMillis()-startDen.getTimeInMillis())/(24*60*60*1000)+1;
	}
	public String toString(){
		return startDen.get(GregorianCalendar.DATE)+"."+ (startDen.get(GregorianCalendar.MONTH)+1)+ "."+startDen.get(GregorianCalendar.YEAR);
	}
	
	/**
	 * Sætter lægemiddelet til det ønskede
	 * @param laegemiddel det lægemiddel, der skal ordineres
	 */
	public void setLaegemiddel(Laegemiddel laegemiddel) {
		this.laegemiddel = laegemiddel;
	}
	
	
	
	/**
	 * Returnerer det lægemiddel, der ordineres
	 * @return det lægemiddel, der bliver ordineret
	 */
	public Laegemiddel getLaegemiddel() {
		return this.laegemiddel;
	}
	
	
	
	
	/**
	 * Returnerer den totale dosis der er givet i den periode ordinationen er gyldig
	 * @return
	 */
	public abstract double samletDosis();
	
	/**
	 * Returnerer den gennemsnitlige dosis givet pr dag i den periode ordinationen er gyldig
	 * @return
	 */
	public abstract double doegnDosis();
	
	
}
